Security News
GitHub Removes Malicious Pull Requests Targeting Open Source Repositories
GitHub removed 27 malicious pull requests attempting to inject harmful code across multiple open source repositories, in another round of low-effort attacks.
supports-color
Advanced tools
The supports-color npm package is used to detect whether a terminal supports color and, if so, which kinds of color. It can be used to tailor output to the terminal's capabilities, avoiding the use of color when it's not supported and enabling it when possible. This can help improve the readability and aesthetics of command-line tool output.
Detecting Color Support
This feature allows you to check if the terminal supports color, and if so, what level of color support it has (basic colors, 256 colors, or 16 million colors).
const supportsColor = require('supports-color');
if (supportsColor.stdout) {
console.log('Terminal stdout supports color');
}
if (supportsColor.stdout.has256) {
console.log('Terminal stdout supports 256 colors');
}
if (supportsColor.stderr.has16m) {
console.log('Terminal stderr supports 16 million colors (truecolor)');
}
Forcing Color Support
This feature allows you to force color support in the terminal. This can be useful for testing or when running in environments where color support is not detected correctly.
const supportsColor = require('supports-color');
process.env.FORCE_COLOR = '1';
supportsColor.stdout.level = 1;
console.log('Forced color support level to basic colors');
Chalk is a popular npm package that allows you to style and colorize text in the terminal. It is more feature-rich than supports-color, providing an easy-to-use API for applying styles, but it also uses supports-color internally to determine color support.
ansi-colors is another npm package for coloring terminal text. It focuses on being lightweight and has no dependencies. It offers a similar API to chalk but does not have the same level of abstraction or convenience methods.
cli-color is an npm package that provides a function-based API for styling terminal text. It offers color support detection as well as a wide range of text formatting options. It is more comprehensive than supports-color but also more complex to use.
Detect whether a terminal supports color
$ npm install supports-color
import supportsColor from 'supports-color';
if (supportsColor.stdout) {
console.log('Terminal stdout supports color');
}
if (supportsColor.stdout.has256) {
console.log('Terminal stdout supports 256 colors');
}
if (supportsColor.stderr.has16m) {
console.log('Terminal stderr supports 16 million colors (truecolor)');
}
Returns an object
with a stdout
and stderr
property for testing either streams. Each property is an Object
, or false
if color is not supported.
The stdout
/stderr
objects specifies a level of support for color through a .level
property and a corresponding flag:
.level = 1
and .hasBasic = true
: Basic color support (16 colors).level = 2
and .has256 = true
: 256 color support.level = 3
and .has16m = true
: Truecolor support (16 million colors)The package also exposes the named export createSupportColor
function that takes an arbitrary write stream (for example, process.stdout
) and an optional options object to (re-)evaluate color support for an arbitrary stream.
import {createSupportsColor} from 'supports-color';
const stdoutSupportsColor = createSupportsColor(process.stdout);
if (stdoutSupportsColor) {
console.log('Terminal stdout supports color');
}
// `stdoutSupportsColor` is the same as `supportsColor.stdout`
The options object supports a single boolean property sniffFlags
. By default it is true
, which instructs the detection to sniff process.argv
for the multitude of --color
flags (see Info below). If false
, then process.argv
is not considered when determining color support.
It obeys the --color
and --no-color
CLI flags.
For situations where using --color
is not possible, use the environment variable FORCE_COLOR=1
(level 1), FORCE_COLOR=2
(level 2), or FORCE_COLOR=3
(level 3) to forcefully enable color, or FORCE_COLOR=0
to forcefully disable. The use of FORCE_COLOR
overrides all other color support checks.
Explicit 256/Truecolor mode can be enabled using the --color=256
and --color=16m
flags, respectively.
FAQs
Detect whether a terminal supports color
The npm package supports-color receives a total of 138,492,753 weekly downloads. As such, supports-color popularity was classified as popular.
We found that supports-color demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
GitHub removed 27 malicious pull requests attempting to inject harmful code across multiple open source repositories, in another round of low-effort attacks.
Security News
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.
Security News
Node.js will be enforcing stricter semver-major PR policies a month before major releases to enhance stability and ensure reliable release candidates.